#ifndef _E_GAME_TIME_H_
#define _E_GAME_TIME_H_

#include "eH.h"
namespace engine 
{
class EGameTime
{
  
  static const float s_fDTClampTreshold;

  float     m_fUserTimeMultiplier;
  float     m_fGameTimeMultiplier;
  float     m_fGlobalTimeMultiplier;

public:
  EGameTime();

  void          setTimeSinceLastFrame( float fTimeSinceLastFrame );
  /// User specific time multiplier (that will be multiplied by the game time multiplier)
  inline void   setUserTimeMultiplier( float fTimeMultiplier );
  /// In-game time multiplier (that will be multiplied by the user time multiplier)
  inline void   setGameTimeMultiplier( float fTimeMultiplier );
  /// User specific time multiplier (that will be multiplied by the game time multiplier)
  inline float  getUserTimeMultiplier() const { return m_fUserTimeMultiplier; }
  /// In-game time multiplier (that will be multiplied by the user time multiplier)
  inline float  getGameTimeMultiplier() const { return m_fGameTimeMultiplier; }
  /// Global time multiplier (user * game)
  inline float  getTimeMultiplier() const { return m_fGlobalTimeMultiplier; }
  
  /// m_fDT       = realFrameTime * userTimeMultiplier * gameTimeMultiplier
  float     m_fDT;

  /// m_fDT       = realFrameTime * userTimeMultiplier * gameTimeMultiplier * 60fps
  float     m_fDT60;

  /// m_fRealDT   = realFrameTime
  float     m_fRealDT;

  /// m_fRealDT60 = realFrameTime * 60fps
  float     m_fRealDT60;

  /// The ideal FPS (might be 60 for example)
  static const float s_fDefaultFPS;
};

} // end namespace
#endif